<?php
/**
 * Created by PhpStorm.
 * User: liang
 * Email:1050187159@qq.com
 * Date: 8/9/2018
 * Time: 7:53 PM
 */
namespace Home\Controller;

use Think\Controller;

class BaseController extends Controller
{


    public function _initialize()
    {
        $this->assign(array(
            'sets'      => $this->getBasicSet(),
            'options'   => $this->getOptions()
        ));
    }

    //判断是否是手机端还是电脑端
    public function isMobile()
    {
        //如果有Http_X_WAP_PROFILE则一定是移动设备
        if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])) {
            return true;
        }
        // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
        if (isset ($_SERVER['HTTP_VIA'])){
            // 找不到为flase,否则为true
            return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
        }
        // 脑残法，判断手机发送的客户端标志,兼容性有待提高
        if (isset ($_SERVER['HTTP_USER_AGENT'])){
            $clientkeywords = array ('nokia', 'sony', 'eriCSSon', 'mot', 'samsung', 'htc', 'sgh', 'lg', 'sharp', 'sie-', 'philips', 'panasonic', 'alcatel', 'lenovo', 'iphone', 'ipod', 'blackberry', 'meizu', 'android', 'netfront', 'symbian', 'ucweb', 'windowsce', 'palm', 'operamini', 'operamobi', 'openwave', 'nexusone', 'cldc', 'midp', 'wap', 'mobile'
            );
            // 从HTTP_USER_AGENT中查找手机浏览器的关键字
            if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))){
                return true;
            }
        }
        //协议法，因为有可能不准确，放到最后判断
        if (isset ($_SERVER['HTTP_ACCEPT'])){
            //如果只支持wml并且不支持HTML那一定是移动设备
            //如果支持wml和html但是wml在html之前则是移动设备
            if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))){
                return true;
            }
        }
        return false;
    }


    public function _empty()
    {
        $this->display('web/Error/error');
        exit;
    }

    public function getOptions()
    {
        $Option = D('Option');
        $options = $Option->field('options.*,navigators.module_name,navigators.controller_name,navigators.action_name')
            ->where(array('options.is_show'=>array('eq', 1)))
            ->order('sort asc')
            ->join('left join navigators on navigator_id = navigators.id')
            ->limit(6)
            ->select();
        return $options;
    }

    public function getBasicSet()
    {
        $sets =file_get_contents(APP_PATH.'set-basic.json');
        $sets = json_decode($sets,true);
        return $sets;
    }
}